<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
		
	<!-- 루트 DAO 컨텍스트; 다른 모든 웹 컴포넌트에서 참조 가능한 DAO 관련 자원을 정의한다. -->
	
	<!-- NewBiz 데이터베이스 액세스를 위한 프로퍼티 빈으로 Failover 지원을 위한 커넥션 프로바이더를 기반으로 한다. -->
	<bean id="newbizDaoProperty"
		class="org.springframework.beans.factory.config.PropertiesFactoryBean">
		<property name="properties">
			<props>
				<!-- 데이터베이스 커넥션을 위한 클래스를 설정한다. -->
				<prop key="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</prop>
				<!-- 데이터베이스 액세스 정보 암호화를 위해 사용되는 Encryptor의 명칭을 정의한다. -->
				<prop key="hibernate.connection.encryptor_registered_name">strongHibernateStringEncryptor</prop>
				<!-- 데이터베이스 드라이버를 담당하는 클래스를 설정한다. -->
				<prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
				<!-- 데이터베이스 커넥션을 위한 URL을 설정한다. -->
				<prop key="hibernate.connection.url">jdbc:mysql://my5003.gabiadb.com:3306/newbiz</prop>
				<!-- Failover 상황에서 사용되는 여분의 데이터베이스 커넥션 URL을 정의한다. Failover를 사용하지 않는 경우, 설정하지 않는다. -->
				<prop key="hibernate.connection.url.failover">jdbc:mysql://localhost/newbiz</prop>
				<prop key="hibernate.connection.username">hjw8494</prop>
				<prop key="hibernate.connection.password">qlalfqjsgh1</prop>
				<!--  -->
				<prop key="hibernate.c3p0.idle_test_period">10</prop>
				<!-- 커넥션 풀의 JDBC 커넥션 최소 개수를 설정한다.(기본 1개) -->
				<prop key="hibernate.c3p0.min_size">10</prop>
				<!-- 커넥션 풀의 JDBC 커넥션 최대 개수를 설정한다.(기본 100개) -->
				<prop key="hibernate.c3p0.max_size">30</prop>
				<!-- 커넥션 풀 내의 커넥션의 타임아웃을 설정한다.(0일 경우, 파기되지 않는다.) -->
				<prop key="hibernate.c3p0.timeout">3000</prop>
				<!--  -->
				<prop key="hibernate.c3p0.testConnectionOnCheckout">true</prop>
				<!-- 각 데이터베이스 제품에 맞는 데이터 타입 컨버터를 설정한다. -->
				<prop key="hibernate.dialect">devcken.hibernate.dialect.UnicodeSupportMySqlDialect</prop>
				<!-- 하이버네이트에서 실행되는 SQL 문을 로그 내에서 출력할 지 여부를 설정한다. -->
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
				<!-- 하이버네이트 오브젝트에 대응하는 테이블 자동 생성을 조절한다.
				 create : 스키마를 지우고 새로 생성한다.
				 create-drop : SessionFactory가 해제될 때, 스키마를 삭제한다.
				 update : 도메인 객체와 스키마를 비교하여 필요한 테이블과 컬럼만을 생성한다.
				 validate : 도메인 객체와 스키마를 비교할 뿐, 수정하지는 않는다. 서로 다를 경우, 서버는 시작되지 않는다.) -->
				<prop key="hibernate.hbm2ddl.auto">none</prop>
			</props>
		</property>
	</bean>
	
	<!-- NewBiz 의 보안 세션 팩토리를 정의한다. -->
	<bean id="newbizSecuritySessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="annotatedClasses">
			<list>
				<value>com.foundationmade.newbiz.core.security.domain.SecurityIdentity</value>
			</list>
		</property>
		<property name="hibernateProperties" ref="newbizDaoProperty"></property>
	</bean>
	
	<!-- NewBiz 보안 트랜잭션 메니저에 대한 어노테이션 드라이븐을 설정한다. -->
	<tx:annotation-driven transaction-manager="newbizSecurityTransactionManager"/>
	
	<!-- NewBiz 의 보안 트랜잭션 메니저를 정의한다. -->
	<bean id="newbizSecurityTransactionManager"
		class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="sessionFactory" ref="newbizSecuritySessionFactory"></property>
	</bean>
	
</beans>